package pt.onlineShop.processing;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import pt.onlineShop.models.Administrator;
import pt.onlineShop.models.Costumer;
import pt.onlineShop.models.Order;
import pt.onlineShop.models.Product;
import pt.onlineShop.models.Warehouse;
/**
* Read and write the state of the warehouse,admin and costumers
* @author Chiti
*
*/
public class SerializeObjects {
private Warehouse warehouse=new Warehouse();
private Administrator administrator=new Administrator();
private Costumer costumer1=new Costumer();
private Costumer costumer2=new Costumer();
public void writeWarehouse() {
try (FileOutputStream fs = new FileOutputStream("warehouse.bin")) {
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeInt(warehouse.getWarehouse().size());
for (Product product : warehouse.getWarehouse())
os.writeObject(product);
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void readWarehouse() {
try (FileInputStream fs = new FileInputStream("warehouse.bin")) {
ObjectInputStream os = new ObjectInputStream(fs);
int warehouseSize=os.readInt();
for (int i=0;i<warehouseSize;i++)
warehouse.addProduct((Product)os.readObject());
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void writeAdministrator() {
try (FileOutputStream fs = new FileOutputStream("administrator.bin")) {
ObjectOutputStream os = new ObjectOutputStream(fs);
Administrator admin=new Administrator();
admin.setName("Administartor");
admin.setPassword("1234");
os.writeObject(admin);
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void readAdministrator() {
try (FileInputStream fs = new FileInputStream("administrator.bin")) {
ObjectInputStream os = new ObjectInputStream(fs);
administrator=(Administrator)os.readObject();
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void writeCostumer1() {
try (FileOutputStream fs = new FileOutputStream("costumer1.bin")) {
ObjectOutputStream os = new ObjectOutputStream(fs);
costumer1.setUsername("Cristina");
costumer1.setPasswoard("12");
os.writeObject(costumer1);
os.writeInt(costumer1.getOrders().size());
for (Order i:costumer1.getOrders())
os.writeObject(i);
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void setCostumer2(Costumer costumer2) {
this.costumer2 = costumer2;
}
public void readCostumer1() {
try (FileInputStream fs = new FileInputStream("costumer1.bin")) {
ObjectInputStream os = new ObjectInputStream(fs);
costumer1=(Costumer)os.readObject();
int warehouseSize=os.readInt();
for (int i=0;i<warehouseSize;i++)
costumer1.getOrders().add((Order)os.readObject());
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void writeCostumer2() {
try (FileOutputStream fs = new FileOutputStream("costumer2.bin")) {
ObjectOutputStream os = new ObjectOutputStream(fs);
costumer2.setUsername("Guest");
costumer2.setPasswoard("0000");
os.writeObject(costumer2);
os.writeInt(costumer2.getOrders().size());
for (Order i:costumer2.getOrders())
os.writeObject(i);
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void readCostumer2() {
try (FileInputStream fs = new FileInputStream("costumer2.bin")) {
ObjectInputStream os = new ObjectInputStream(fs);
costumer2=(Costumer)os.readObject();
int warehouseSize=os.readInt();
for (int i=0;i<warehouseSize;i++)
costumer2.getOrders().add((Order)os.readObject());
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @return the warehouse
*/
public Warehouse getWarehouse() {
return warehouse;
}
/**
* @return the administrator
*/
public Administrator getAdministrator() {
return administrator;
}
/**
* @return the costumer1
*/
public Costumer getCostumer1() {
return costumer1;
}
/**
* @return the costumer2
*/
public Costumer getCostumer2() {
return costumer2;
}
/**
* @param warehouse the warehouse to set
*/
public void setWarehouse(Warehouse warehouse) {
this.warehouse = warehouse;
}
/**
* @param administrator the administrator to set
*/
public void setAdministrator(Administrator administrator) {
this.administrator = administrator;
}
/**
* @param costumer1 the costumer1 to set
*/
public void setCostumer1(Costumer costumer1) {
this.costumer1 = costumer1;
}
/**
* @param costumer2 the costumer2 to set
*/
}